﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Fuyao.Business.Entities.Models;
using Fuyao.Business.Logic.BC;
using Fuyao.Win.UI.Util;

namespace Fuyao.Win.UI.Mantenimientos
{
    public partial class frmSelectProductos : Form
    {
        BusinessLogic bc = new BusinessLogic();
        List<Producto> listProducto = new List<Producto>();
        bool wasSelected = false;
        #region Properties
        public Producto ProductoSeleccionado { get; set; }
        #endregion

        public frmSelectProductos()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            Utilitarios.configurarGrilla(ref dgvProductos);
            setColumnasGrilla();
            cargarGrillaProductos(true);
        }

        private void cargarGrillaProductos(bool _valMsgBox)
        {
            Producto beProducto = new Producto();
            beProducto.CodigoProducto = this.txtCodigo.Text.Trim() == string.Empty ? "0" : this.txtCodigo.Text.Trim();
            beProducto.Caracteristica = this.txtCaracteristica.Text.Trim() == string.Empty ? "0" : this.txtCaracteristica.Text.Trim();
            beProducto.DescripcionProducto = this.txtDescripcionProducto.Text.Trim() == string.Empty ? "0" : this.txtDescripcionProducto.Text.Trim();
            beProducto.Estado = true;

            listProducto = bc.getProductsByFiler(beProducto);         
            if (listProducto.Count > 0) dgvProductos.DataSource = listProducto;
            else
            {
                if (!_valMsgBox)
                {
                    MessageBox.Show("No se encontraron registros, verifique los filtros de búsqueda", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    dgvProductos.DataSource = (listProducto = new List<Producto>());
                }
            }
        }

        private void setColumnasGrilla()
        {
            colCodigoLarge.DataPropertyName = "CodigoProducto";
            colCodigoShort.DataPropertyName = "Caracteristica";
            colDescripcionProd.DataPropertyName = "DescripcionProducto";
            ColPrecio.DataPropertyName = "Precio";
            colDescuento.DataPropertyName = "Descuento";
        }

        private void frmSelectProductos_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!wasSelected)
                ProductoSeleccionado = null;
        }

        private void addProductoDetalle()
        {
            if (dgvProductos.CurrentRow.DataBoundItem != null)
            {
                ProductoSeleccionado = (Producto)dgvProductos.CurrentRow.DataBoundItem;
                wasSelected = true;
            }
            else
                ProductoSeleccionado = null;

            this.Close();
        }

        private void dgvProductos_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex > -1) addProductoDetalle();         
        }

        private void btnBuscarProd_Click(object sender, EventArgs e)
        {
            cargarGrillaProductos(false);  
        }

        private void btnSelectProd_Click(object sender, EventArgs e)
        {
            if (dgvProductos.Rows.Count > 0) addProductoDetalle();
        }

        private void txtCodigo_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.txtDescripcionProducto.Focus();
        }

        private void txtCaracteristica_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.txtDescripcionProducto.Focus();
        }

        private void txtDescripcionProducto_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.btnBuscarProd.Focus();
        }

        private void btnBuscarProd_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.btnSelectProd.Focus();
        }

        private void frmSelectProductos_KeyPress(object sender, KeyPressEventArgs e)
        {
            Utilitarios.cerrarFormularioEscape(e, this);
        }

    }
}
